package br.com.salao.model;

import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;

import br.com.salao.bean.Login;
import br.com.salao.bean.Usuario;
import br.com.salao.dao.UsuarioDao;
import br.com.salao.dao.UsuarioDaoImpl;
import br.com.salao.util.JpaUtil;
import br.com.salao.util.Utils;

public class UsuarioModel {

	Logger logger = Logger.getLogger(UsuarioModel.class.getName());
	private EntityManager em;
	private Login usuarioLogado;
	
/*	FacesContext facesContext = FacesContext.getCurrentInstance();
	HttpServletRequest request = (HttpServletRequest) facesContext.getCurrentInstance().getExternalContext().getRequest();
	HttpSession session = request.getSession();
	session.getAttribute("nomeObjeto");*/

	public UsuarioModel(){
		em = JpaUtil.getEntityManager();
		usuarioLogado = new Login();
		usuarioLogado = null;
	}

	public Usuario inserir(Usuario usuario){
		UsuarioDao dao = new UsuarioDaoImpl(em);
		return dao.inserir(usuario);
	}
	
	public Usuario buscarUsuarioPeloCpf(Usuario usuario){
		UsuarioDaoImpl dao = new UsuarioDaoImpl(em);
		return dao.buscarUsuarioPeloCpf(usuario.getCpf());
	}
	
	public Usuario buscarUsuarioPeloEmail(Usuario usuario){
		UsuarioDaoImpl dao = new UsuarioDaoImpl(em);
		return dao.buscarUsuarioPeloEmail(usuario.getEmail());
	}
	

	
	public Usuario guardaUsuarioSessao(String login){
		UsuarioDaoImpl dao = new UsuarioDaoImpl(em);
		return dao.guardaUsuarioSessao(login);
	}

    private HttpServletRequest getRequest() {  
        return (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();  
    } 	

	public boolean isCampoNulo(Usuario usuario,String cidade,String bairro){

		if(usuario.getCpf() == null || 
				usuario.getRg() == null || 
				usuario.getNome() == null ||
				usuario.getSobrenome() == null || 
				usuario.getDataNasc() == null || 
				usuario.getEmail() ==null ||
				usuario.getTelefone() == null || 
				usuario.getSexo() == null || 
				cidade == null ||	
				bairro == null ||
				usuario.getEndereco().getCep() == null  ||  
				usuario.getEndereco().getLogradouro() == null || 
				usuario.getEndereco().getNumero() == null) {
			return false;
		}
		return true;		
	}
	
	public Usuario formatarCampos(Usuario usuario) throws Exception{
		
	
		usuario.setNome(usuario.getNome().trim().toUpperCase());
		usuario.setSobrenome(usuario.getSobrenome().trim().toUpperCase());
		usuario.getEndereco().setLogradouro(Utils.removeAcentosTexto(usuario.getEndereco().getLogradouro()));
		usuario.setCpf(usuario.getCpf().replace(".", ""));
		usuario.setCpf(usuario.getCpf().replace("-", ""));
		usuario.setRg(usuario.getRg().replace(".", ""));
		usuario.setRg(usuario.getRg().replace("-", ""));
		
		return usuario;
	}

	public Login getUsuarioLogado() {
		return usuarioLogado;
	}

	public void setUsuarioLogado(Login usuarioLogado) {
		this.usuarioLogado = usuarioLogado;
	}

}
